// STL8.cp #include <iostream> #include <memory> #include <string> #include <cstring> #include <MacTypes.h> class PStrTemp {
Str255 s; void MakePString(const char *cString) {std::size_t length= std::strlen(cString); s[0] = length > 255? 255: length; std::strncpy((char *)&s[1], cString, 255);};public:PStrTemp(const char *cString) {MakePString(cString);}; PStrTemp(const std::string& stdString) {MakePString(stdString.c_str());}; operator const unsigned char *() const {return s;};
}; using namespace std; void PStringFunction(ConstStr255Param stringValue); void PStringFunction(ConstStr255Param stringValue) {
// do something string outString((const char *)&stringValue[1], stringValue[0]); cout << outString << endl;
} int main() {
char *a = "C string"; string b = "std::string"; PStringFunction(PStrTemp(a)); PStringFunction(PStrTemp(b));
}